Eurofins – Datalogger Suite
Projektet er lavet for firmaet Eurofins i 2002-2003. http://www.eurofins.dk
Teknisk set er løsningen lavet i Delphi 6.0 til Windows 98, 2000 og XP. Datalogger Suiten består nu af 4 hoveddele, der er tæt integreret og data indlæst i en del kan anvendes af de andre dele:- Datalogger (dataopsamling)
- Datamani (datamanipulation)
- Average (middelværdiberegning)
- Plot (kurveudskrift)
Systemet er bygget op ligesom f.eks. Word, hvor der er et hovedprogram, der kan indeholde et vilkårligt antal undervinduer. Disse undervinduer kan åbnes ved hjælp af menuer eller knapper, og man kan frit flytte rundt på dem eller ændre størrelse på dem. Se figur 1.
Systemet fylder ca. 50.000 linjer i Delphi, og har et væld af funktioner, så kun de væsentligste vil blive nævnt her.
Da de 4 hoveddele har en stor del af fælles kode, blandt andet til grafvisning vil mange af de nævnte funktionaliteter gælde for alle 4 dele. Af hensyn til mængden af materiale vil de dog kun blive beskrevet en gang.
Datalogger (dataopsamling)
Figur 2 viser en typisk Datalogningssituation, hvor dataloggeren er sat op til at logge data fra alle 32 indgange. Af disse monitoreres kanal 4 og 5, her kaldet H20 og C2O og vises grafisk i det øverste af de 2 vinduer.Det nederste vindue viser opsætningen for de 32 kanaler, og her kan man ændre et væld af indstillinger for de forskellige kanaler. Kanal nummer 4 er her markeret og man kan f.eks. lægge mærke til at der er tastet en span faktor på 1.2 ind. Det betyder at alle den blå grafs måledata vil få denne faktor ganget på.
Man kan også vælge at se på et tabelvindue, der viser de loggede data tekstuelt. Vinduet kan stilles til at vise de nyeste værdier kontinuerligt øverst. Det er muligt at åbne et lille popupvindue for hver graf, der viser gennemsnitsværdier for de sidste pollede værdier. Dette vindue er vist nederst til højre på figur 3.
Programmet kan stilles så ikke alle pollede værdier logges. Typisk vil man gerne polle måske hvert 10. sekund, men kun gemme en værdi for hvert minut. Der gemmes/logges så en gennemsnitsværdi, der er beregnet ud fra de værdier, der er blevet pollet det sidste minut.
Allerøverst i programmet ligger alle menuerne og lige under ligger en bjælke med knapper. Hvilke knapper, der ligger i bjælken afhænger af sammenhængen. Yderst til højre på bjælken vil der i DataLoggeren være en play knap, der kan trykkes ind for at starte datalogningen og en pære, der blinker hver gang en ny værdi bliver pollet.
[I] Knappen vil åbne indstillingsvinduet, hvor man blandt andet kan stille COM port, Datalogningsintervaller, pollintervaller og meget andet. Dette er vist på figur 4.
En vigtig del af Dataloggeren er muligheden for at lave beregningskanaler, der ud fra en indtastet formel kan lave korrektioner eller andet. Til dette er udviklet en meget hurtig formelparser og beregner, der i realtime kan parse og beregne tusindvis af punkter og formler. Ofte ser man i den slags programmer at brugerne er nødt til at skrive meget kryptiske beskrivelser af deres formler fordi programmøren ikke har haft evnerne til at lave en rigtig løsning.
Komits løsning fungerer som en standard parser til ethvert programmeringssprog, så man kan bare skrive formler ind i klartekst som f.eks. : Ilt * vand + sin(måler1 + måler2) osv. Der er ikke nogen begrænsninger af hvilke formler der kan indgå og man kan have næsten vilkårligt store udtryk. Mangler der nogle matematiske operationer, kan disse nemt lægges ind i systemet efter behov.
Figur 5 viser formelparseren i brug, hvor man kan se en indtastet formel, samt se den blive vist på et af grafvinduerne.
Der er 32 beregningskanaler, og i eksemplet på figur 5 er formlen H2O * 0.5 tastet ind. Som det ses til højre vises straks en formelberegning hvor de sidst loggede data anvendes. Er der fejl i formlen vil der ikke komme et grimt popup vindue frem, men fejlbeskeden vil blot blive udskrevet i Calculated Value søjlen.
Hvis man kigger på grafvinduet er H2O kanalen valgt med blåt og beregningskanal 3 er valgt med orange. Y aksen er også ændret så den viser værdien i mV i stedet for %. Det kan nogen gange være en fordel at skifte imellem de 2 visningsformer.
Værktøjet indeholder også mulighed for at lave zero/span korrektion, så man kan kalibrere DataLoggeren til at passe med ens instrumenter. Det er vist på figur 6.
Gennem hele systemet kan man højreklikke på grafer tabeller osv. og der vil så fremkomme en kontekstafhængig dropdownmenu. Man kan i Zero/Span vinduet vælge at overføre en værdi fra kurven markeret af musen til Zero/Span korrektionsvinduet. Se figur 7.
Her kan man ud over at indstille zero/span indstille en del andre parametre for den valgte kanal. Det er også muligt at betragte forskellige afvigelser med mere.
Alle vigtige informationer om f.eks. valg, ændringer af indstillinger og programbeskeder gemmes i en logfil, som man kan få frem ved at trykke på knappen med bogen. Et eksempel på dette er vist på figur 8.
Man kan her tilføje en kommentar, ændre eller slette en allerede registreret indgang i logfilen. Indgangene er sorteret kronologisk.
Hvis man holder musen over kurven vil der fremkomme et lille hintvindue, der viser data omkring musepositionen, samt det nærmeste punkt på grafen. Se figur 9.
I dette eksempel er der markeret et område ud med musen (som man gør i standard Windows). Denne firkant vil der blive zoomet ind på, når musen slippes og man vil derved få vist et udsnit af grafen som det ses på figur 10.
Hvis man har valgt at kigge på flere grafer kan det nogen gange være en fordel at de har hver deres Y-akse. Dette er illustreret på figur 11
Her er der så stor forskel på skaleringen af Y-værdierne at det ville være svært at sammenligne dem hvis der blev brugt den samme Y akse. Alternativt kunne man også vælge at bruge % vis sammenligning, og stille %0 og %100 værdierne for de 2 kanaler til passende værdier.
Datamani (datamanipulation)
I Datamani kan man hente datafiler, der er logget med dataloggeren. Disse er gemt med en fil pr døgn. Hvis 2 filer hentes vil disse automatisk blive sammensat, så der kan datamanipuleres over flere dage på en gang.I eksemplet på figur 12, er der udvalgt et rødt interval (mus venstreklik plus CTRL), og man har valgt at ændre tags til 0 for de valgte data. Kun data med tag 1 er normalt valide. Efter det samme er gjort i højre side opnås billedet vist på figur 13.
Denne operation kan være smart at bruge til at slippe af med data, fra før den rigtige måling, eller anden data, der ikke er brugbar. Data slettes ikke fra dataloggeren, det får blot sat sin validitetstag til 0, og man kan vælge at se en graf.
På figur 14 er den samme operation vist med grønne uafhængige intervaller. (Venstreklik med mus + ALT) Fordelen ved at bruge de uafhængige intervaller er at man kan udvælge et stykke på venstre og højre side af grafen samtidigt og så udføre den samme operation på dem begge.
Begge metoder leder til det samme resultat, som efter at grafvisningen i % for de 2 kanaler er indstillet til passende værdier, så de kan bruge samme akse giver resultatet vist på figur 15.
Man kan altid se de aktuelle indstillinger for graferne oppe i højre hjørne. Her ses at den brune graf er kanal 8 og den er stillet så 0% er værdien 0 100% er værdien 0,6. Hvilken enhed der anvendes kan også stilles under kanalindstillingerne og der er mulighed for at lave automatisk beregning af slutenhed, hvor flere forskellige enheder indgår i en beregning. Se figur 16.
Vi vælger nu kun kanal 5, vælger et passende interval ud og laver en beregning på det, som vist ovenfor. Der fremkommer en dialog hvor vi indtaster følgende formel: ch5 * 0.5. Det giver resultatet vist på figur 17.
Average (middelværdiberegning)
Hvis vi henter den samme datafil ind, som vi brugte i datamani ovenfor, se figur 18, udvælger et passende interval, og vælger Calculate Raw Average Values, får vi vinduet frem vist på figur 19.Her vises det valgte interval tekstuelt, og vi kan vælge at ændre intervallet eller indtaste endnu et interval. Vi kan også vælge at beregne gennemsnit for kanal 1-16, 17-32 eller alle kanaler. I vores eksempel sætter vi ingen kryds og gennemsnit vil så kun blive beregnet for de allerede valgte kanaler. Se figur 20.
Averageval indeholder desuden mulighed for at indstille en del variable til beregning af gennemsnit hvor der korrigeres med værdier fra andre kanaler, samt mulighed for at beregne disse.
Plot (kurveudskrift)
Plot delen blev oprindeligt udviklet da de 3 foregående dele ikke printede graferne specielt flot ud hverken på skærmen eller printer, men da det meste af det kode der er udviklet til plot er genbrugt i de 3 andre applikationer er der i dag ikke den helt store forskel på Plot og de andre dele. Plot giver dog lidt flere muligheder for den grafiske repræsentation af graferne.En smart detalje (som det også er muligt at bruge i de andre applikationer) er muligheden for at indsætte labels til at markere specielle steder på grafen. Dette gøres ved at venstreklikke med musen og holde SKIFT nede samtidigt. Der vil så blive oprettet en label på det angivne sted. Hvis man dobbeltklikker på denne label får man mulighed for at ændre font, farve og tekst. Se figur 21.
på figur 21 er der oprettet 2 labels hvor kurven falder og stiger igen.